// 地图
import * as Cesium from 'cesium'
import config from './config.js'
import layer from './layer.js'
import camera from './camera.js'

class CesiumMap {
  constructor () {}

  // 初始化
  init (setting) {
    setting = setting || {}
    let options = setting.options || {}
    window.CESIUM_BASE_URL = setting.CESIUM_BASE_URL || config.CESIUM_BASE_URL
    Cesium.Ion.defaultAccessToken = setting.defaultAccessToken || config.defaultAccessToken
    // Cesium.Ion.defaultServer = 'http://127.0.0.1' // token请求地址
    const viewer = new Cesium.Viewer(setting.id, Object.assign({
      geocoder: false, // 是否显示地名查找控件
      homeButton: false, // 是否显示Home按钮
      sceneModePicker: true, // 是否显示投影方式控件（2D、2.5D、3D展示方式切换）
      selectionIndicator: true,  // 是否显示选取指示器组件
      baseLayerPicker: false, // 是否显示图层选择控件
      navigationHelpButton: false, // 是否显示帮助信息控件
      animation: false, // 是否显示动画控件
      // creditContainer: "credit",  // 对应上面div的ID
      timeline: false, // 是否显示时间线控件
      fullscreenButton: false, // 是否显示全屏按钮
      vrButton: false, // 虚拟
      infoBox: false, //是否显示点击要素之后显示的信息
      // requestRenderMode: true, //启用请求渲染模式
      scene3DOnly: false, // 每个几何实例将只能以3D渲染以节省GPU内存,设置为true,2、3维切换按钮将被隐藏
      // sceneMode: 3, //初始场景模式 1 2D模式 2 2D循环模式 3 3D模式  Cesium.SceneMode
			// terrainProvider: Cesium.createWorldTerrain(), // 加载地形
      // imageryProvider: new Cesium.WebMapTileServiceImageryProvider({
      //   url: "http://{s}.tianditu.gov.cn/img_w/wmts?tk=5e5949f7e96e8a136ef36a6594f18cdf",
      //   layer: "img",
      //   style: "default",
      //   tileMatrixSetID: "w",
      //   format: "tiles",
      //   subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"], // 服务域名
      //   maximumLevel: 18,
      // })
      imageryProvider: new Cesium.SingleTileImageryProvider({ // 不加载地图
        url: ''
      })
    }, options))
    viewer._cesiumWidget._creditContainer.style.display = 'none' // 隐藏logo
    viewer.scene.fxaa = false
    // viewer.scene.imageryLayers.removeAll() // 去除其他图层
    // viewer.scene.globe.show = false // 隐藏默认地球
    // viewer.imageryLayers.get(0).show = false; // 隐藏默认地球底图
    // viewer.scene.globe.baseColor = Cesium.Color.BLACK; // 黑色球
    // 背景颜色
    // viewer.scene.backgroundColor = new Cesium.Color(0, 0, 0, 0); // 设置背景为黑色 Cesium.Color.TRANSPARENT // 设置背景为透明
    // viewer.scene.skyBox.destroy()
    // viewer.scene.skyBox = undefined
    // viewer.scene.sun.destroy()
    // viewer.scene.sun = undefined
    // viewer.scene.moon.destroy()
    // viewer.scene.moon = undefined
    // viewer.scene.skyAtmosphere.destroy() // 禁用星光
    // viewer.scene.skyAtmosphere = undefined
    // viewer.scene.debugShowFramesPerSecond = false // 显示帧率
    // 图层初始化
    layer.init(viewer, setting)
    // 像机初始化
    camera.init(viewer, setting)
    // 关闭双击事件
    viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(
      Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK
    )

    return viewer
  }
}

const cmap = new CesiumMap()

export default cmap

export {
  Cesium,
  CesiumMap
}
